import abc


class Pet(metaclass=abc.ABCMeta):  # 指定元类
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @abc.abstractmethod  # 使用装饰器定义抽象方法
    def mealPay(self,name):
        pass


class Dog(Pet):
    def mealPay(self, name):  # 实现mealPay方法
        print("我是一只宠物狗狗，我的名字叫{0}".format(name))
        money = 1 * 4 * 30
        print("我每个月的生活费需要{0}元".format(money))


class Cat(Pet):
    def mealPay(self, name):  # 实现mealPay方法
        print("我是一只宠物猫猫，我的名字叫{0}".format(name))
        money = 0.25 * 5 * 30
        print("我每个月的生活费需要{0}元".format(money))


class Pig(Pet):
    def mealPay(self, name):  # 实现mealPay方法
        print("我是一只宠物猪猪，我的名字叫{0}".format(name))
        money = 1.5 * 3 * 30
        print("我每个月的生活费需要{0}元".format(money))


while 1:  # 使用循环语句让程序一直处于运行状态
    print("宠物月花费计算系统：\n1.狗狗\n2.猫猫\n3.猪猪")
    choice = input("请输入您的选择：")  # 使用多分支语句判断用户的选择
    if choice == "1":
        d1 = Dog("大壮", 3)
        d1.mealPay(d1.name)  # 调用计算花费的方法
    elif choice == "2":
        c1 = Cat("圆圆", 2)
        c1.mealPay(c1.name)  # 调用计算花费的方法
    elif choice == "3":
        p1 = Pig("嘟嘟", 2)
        p1.mealPay(p1.name)  # 调用计算花费的方法
    else:
        print("您的输入有误，请重新输入：")
